using System;
using BillsDomain;

namespace BillsPresentation
{
    /// <summary>
    /// Describes the interface for adding a payment
    /// </summary>
    public interface IAddPaymentView : IView
    {
        /// <summary>
        /// Gets a value indicating whether the payment is a new one or an existing one.
        /// </summary>
        /// <value><c>true</c> if adding a new payment; otherwise, <c>false</c>.</value>
        bool AddMode { get; }

        /// <summary>
        /// Gets or sets the amount.
        /// </summary>
        /// <value>The amount.</value>
        string Amount { get; set; }

        /// <summary>
        /// Gets or sets the start date.
        /// </summary>
        /// <value>The start date.</value>
        DateTime StartDate { get; set; }

        /// <summary>
        /// Gets the recurrence lookup list.
        /// </summary>
        /// <value>The recurrence lookup.</value>
        ILookupList RecurrenceLookup { get; }

        /// <summary>
        /// Gets the type lookup list.
        /// </summary>
        /// <value>The type lookup.</value>
        ILookupList TypeLookup { get; }

        /// <summary>
        /// Occurs when the Save button is pressed.
        /// </summary>
        event EventHandler SaveClicked;

        /// <summary>
        /// Gets or sets a value indicating whether the payment should be included in balance projections.
        /// </summary>
        /// <value><c>true</c> if the payment should be included in balance projections; otherwise, <c>false</c>.</value>
        bool IncludeInProjection { get; set; }

        /// <summary>
        /// Gets the payee name lookup list.
        /// </summary>
        /// <value>The payee name lookup list.</value>
        ILookupList PayeeLookup { get; }
    }
}
